gusucode.com > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM源码程序 > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM\Regression_LS_SVMlab.m

    % 支持向量机用于函数拟合 - 必须选择最优参数 gam,sig2
% 工具箱:LS_SVMlab
% 使用平台:Matlab6.5
% 作者:陆振波,海军工程大学
% 欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页
% 电子邮件:luzhenbo@sina.com
% 个人主页:luzhenbo.88uu.com.cn

%clc
clear
close all

%---------------------------------------------------
% 产生训练样本与测试样本

n1 = 1:2:200;
x1 = sin(n1*0.1);

n2 = 2:2:200;
x2 = sin(n2*0.1);

xn_train = n1;          % 训练样本,每一列为一个样本
dn_train = x1;          % 训练目标,行向量

xn_test = n2;           % 测试样本,每一列为一个样本
dn_test = x2;           % 测试目标,行向量

%---------------------------------------------------
% 参数设置

X = xn_train';
Y = dn_train';
Xt = xn_test';
Yt = dn_test';

type = 'f';
kernel = 'RBF_kernel';
gam = 51678.0989;              % Regularization parameter
sig2 = 0.135589409;            % Kernel parameter (bandwidth in the case of the 'RBF_kernel'

model = initlssvm(X,Y,type,gam,sig2,kernel);                    % 模型初始化

%---------------------------------------------------
% 交叉验证优化参数

% StartingValues = [1 0.01;1e+4 10];    
% optfun = 'gridsearch';
% optargs = {};
% costfun = 'crossvalidate';
% costargs = {X,Y,2};
% model = tunelssvm(model,StartingValues,optfun,optargs,costfun,costargs);     % 模型参数优化 

%---------------------------------------------------
% 训练与测试

model = trainlssvm(model);  % 训练 

err1 =  simlssvm(model,X)-Y;    % 回归
err_mse1 = mean(err1.^2)

Yd = simlssvm(model,Xt);    % 回归
err2 = Yd - Yt; 
err_mse2 = mean(err2.^2)

%---------------------------------------------------
% 结果作图

plot(1:length(Yt),Yt,'r+:',1:length(Yd),Yd,'bo:')
title('+为真实值,o为预测值')